package com.tencent50.easy;

/**
 * @author zhengTao
 * @version 1.0
 * @description: 删除有序数组中的重复项，要求o(1)空间
 * @date 2022/7/23 20:08
 */
public class Demo05 {
    public static void main(String[] args) {
        int[] nums={0,0,1,1,1,2,2,3,3,4};
        int i = removeDuplicates(nums);
        System.out.println(i);

    }
    public static int removeDuplicates(int[] nums) {
          if(nums.length<=1){
              return nums.length;
          }
          int left=0,right=nums.length-1;
          int count=1;

          while (left<right){
            //left<right 1.防止数组溢出 2.减少已经校验过的数据
            if(nums[left]==nums[left+1]){
                //如果左边的等于它的下一位，左边所有的元素向左移动一位，right--
                for (int i = left+1; i <nums.length-1 ; i++) {
                    nums[i]=nums[i+1];
                }
                nums[nums.length-1]=nums[left];
                right--;
            }else {
                //左边的向又移动一位 left++，长度加1
                count++;
                left++;
            }
          }
          return count;
    }
}
